<?php

require_once 'classes/PersonneToRole.php';
require_once 'SCinterface.php';
require_once 'classes/Message.php';

/*
 * Classe de service CRUD pour manipuler les enregistrements des PersonneToRole
 */
class SCpersonnetorole{
    
    private $db;

    /**
     *Contructeur créant l'objet pour la connexion à la DB 
     */
    public function __construct() {
        $this->db = new PDO(ACA_DB_DSN, ACA_DB_USER, ACA_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    /**
    * Ajoute une personneToRole
    * @param personneToRole personneToRole à ajouter
    */
   public function ajouter($unepersonneToRoleAAjouter) {
       try{
           
           $query =  $this->db->prepare("INSERT INTO personnetorole " .
                "(role_nom, personne_id) VALUES(".
                ":nom, :personne_id);");

           $query->execute(array(
                   'nom'              => $unepersonneToRoleAAjouter->getRole_nom(),
                   'personne_id'  => $unepersonneToRoleAAjouter->getPersonne_id()
               ));
           
               $this->db->query($query->queryString);

               $query->closeCursor();
             
       }
       catch(PDOException $e)
        {
            return new Message("personneToRole non ajoutée:".$e->getMessage());
        }
        
               return $unepersonneToRoleAAjouter;
   }

    /**
     * Methode permettant de supprimer une personneToRole
     * @param personneToRole personneToRole à supprimer
     * @return boolean 
     */
    public function supprimer($unepersonneToRoleASupprimer){
        try{
        $query = "DELETE FROM personnetorole WHERE nom_role='".$unepersonneToRoleASupprimer."';";
                   
                $this->db->query($query);
                $message = new Message("personneToRole supprimée");
          
                }
                catch(PDOException $e)
        {
            $message = new Message("personneToRole non supprimée:".$e->getMessage());
        }
               return $message;
    }
   
    /**
     *
     * @param personneToRole personneToRoleALister de recherche sous forme d'objet personneToRole
     * @return un tableau d'objet personneToRole
     */
    public function lister($personneToRoleALister){
        try{
         

            $sql="SELECT * FROM personnetorole ";
            $sql_Where="WHERE";
            if($personneToRoleALister!=NULL)
            {
                
                
                if($personneToRoleALister->getRole_nom()!=NULL)
                {$sql_Where .= " role_nom = '".$personneToRoleALister->getRole_nom()."' AND ";}
                
                if($personneToRoleALister->getPersonne_id()!=NULL)
                {$sql_Where .= " personne_id = '".$personneToRoleALister->getPersonne_id()."' AND ";}

            }         
            
            
            $sql_Where = substr($sql_Where,0,-5);
            $sql.=$sql_Where." order by role_nom;";
            $lesPersonneToRoleTrouvees=NULL;
            $unepersonneToRoleLue=NULL;
            $result = $this->db->query($sql);
            while($row = $result->fetch())
            {   
                $unepersonneToRoleLue = new personneToRole($row['role_nom'],$row['personne_id']);
               
                    $lesPersonneToRoleTrouvees[]=$unepersonneToRoleLue;
            }                
        }
        catch(PDOException $e)
        {
            print($e->getMessage());
            $lesPersonneToRoleTrouvees=NULL;
        }
        return $lesPersonneToRoleTrouvees;
    }
    
      /**
     *
     * @param personneToRole personneToRoleALister de recherche sous forme d'objet personneToRole
     * @return un tableau d'objet personneToRole
     */
    public function listerDisctinct($personneToRoleALister){
        try{
         

            $sql="SELECT DISTINCT personne_id,role_nom FROM personnetorole ";
            $sql_Where="WHERE";
            if($personneToRoleALister!=NULL)
            {
                
                
                if($personneToRoleALister->getRole_nom()!=NULL)
                {$sql_Where .= " role_nom = '".$personneToRoleALister->getRole_nom()."' AND ";}
                
                if($personneToRoleALister->getPersonne_id()!=NULL)
                {$sql_Where .= " personne_id = '".$personneToRoleALister->getPersonne_id()."' AND ";}

            }         
            
            
            $sql_Where = substr($sql_Where,0,-5);
            $sql.=$sql_Where." order by personne_id;";
            $lesPersonneToRoleTrouvees=NULL;
            $unepersonneToRoleLue=NULL;
            $result = $this->db->query($sql);
            while($row = $result->fetch())
            {   
                $unepersonneToRoleLue = new personneToRole($row['role_nom'],$row['personne_id']);
               
                    $lesPersonneToRoleTrouvees[]=$unepersonneToRoleLue;
            }                
        }
        catch(PDOException $e)
        {
            print($e->getMessage());
            $lesPersonneToRoleTrouvees=NULL;
        }
        return $lesPersonneToRoleTrouvees;
    }

  
}

?>
